/*
 * COPYRIGHT Beijing cp-boss-Tech Co.,Ltd.                                   *
 ****************************************************************************
 * 源文件名:  web.config.CachingConfig.java
 * 功能: cpframework框架
 * 版本:	@version 1.0
 * 编制日期: 2014年9月3日 上午9:54:53
 * 修改历史: (主要历史变动原因及说明)
 * YYYY-MM-DD |    Author      |	 Change Description
 * 2014年9月3日    |    Administrator     |     Created
 */
package com.example.common.config;

import com.example.common.service.impl.CaffeineCacheService;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.cache.CacheManager;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.TimeUnit;

/**
 * Description: <启用缓存>. <br>
 * <p>
 * <使用说明>
 * </p>
 */
@ConditionalOnProperty(prefix = "redis.cache", name = "enabled", havingValue = "false", matchIfMissing = true)
@Configuration
public class CachingConfig {

    /**
     * 配置缓存管理器
     *
     * @return 缓存管理器
     */
    @Bean("caffeineCacheManager")
    public CacheManager cacheManager() {
        CaffeineCacheManager cacheManager = new CaffeineCacheManager();
        cacheManager.setCaffeine(Caffeine.newBuilder()
                // 设置最后一次写入或访问后经过固定时间过期
                .expireAfterAccess(3600, TimeUnit.SECONDS)
                // 初始的缓存空间大小
                .initialCapacity(1000)
                // 缓存的最大条数
                .maximumSize(10000));
        return cacheManager;
    }


    @Bean
    public CaffeineCacheService caffeineCacheService() {
        return new CaffeineCacheService();
    }


}


